#####################################################################################
#
#  Copyright (c) Microsoft Corporation. All rights reserved.
#
# This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
# copy of the license can be found in the License.html file at the root of this distribution. If 
# you cannot locate the  Apache License, Version 2.0, please send an email to 
# ironpy@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
# by the terms of the Apache License, Version 2.0.
#
# You must not remove this notice, or any other, from this software.
#
#
#####################################################################################

from System.Windows.Forms import *
from System.Drawing import *

class SavedGameButton(Button):
    
    def __init__(self, caption, y, x, type, level, dimension):
        
        self.index = -1
        
        self.BackColor = Color.White
        self.Size = Size(250, 55)
        self.Font = Font("Verdana", 8)
        self.FlatStyle = FlatStyle.Flat
        _type = ""
        if type == "a":    _type = "Aerial"
        elif type == "h": _type = "Hybrid"
        elif type == "r": _type = "Road"
        self.Text = caption
        self.Text += "\n(" + str(x) + ", " + str(y) + ")"
        self.Text += "\n" + _type + " - Zoom Level " + str(level) + " - " + str(dimension) + "x" + str(dimension)

class LoadGamePanel(Panel):

    def __init__(self):
        self.AutoScroll = True
        self.Size = Size(270, 280)
        self.buttons = []
        self.numButtons = 0
        self.selectedIndex = -1
        
    def AddButton(self, b):
        b.index = self.numButtons
        b.Location = Point(0, self.numButtons * b.Size.Height + self.numButtons * 3)
        self.numButtons += 1
        b.Click += self.buttonClick
        self.buttons += [b]
        self.Controls.Add(b)
        
    def buttonClick(self, sender, e):
        for b in self.buttons:
            b.BackColor = Color.White
        sender.BackColor = Color.LemonChiffon
        self.selectedIndex = sender.index

def LoadAllSavedSettings():
    import clr
    clr.AddReference("System.Xml")
    from System.Xml import *
    import nt
    
    games = []
    state = []
    allowCaching = False
    
    try:
        reader = XmlTextReader(nt.getcwd() + "\load.xml")
        while reader.Read() is True:
            if reader.NodeType == XmlNodeType.Element:
            
                if reader.Name == "Game":
                    game = []
                    game += [reader.GetAttribute("caption")]
                    game += [reader.GetAttribute("type")]
                    game += [int(reader.GetAttribute("y"))]
                    game += [int(reader.GetAttribute("x"))]
                    game += [int(reader.GetAttribute("level"))]
                    game += [int(reader.GetAttribute("dimension"))]
                    games += [game]
                
                elif reader.Name == "TopLeftPreviewTile":
                    state += [int(reader.GetAttribute("x"))]
                    state += [int(reader.GetAttribute("y"))]
                    state += [int(reader.GetAttribute("dimension"))]
                    state += [int(reader.GetAttribute("level"))]
                
                elif reader.Name == "Cache":
                    if reader.GetAttribute("allow").lower() == "true":
                        allowCaching = True
    except:
        print "Error reading load.xml"
        return [[], [327, 714, 3, 11], True]
    
    return [games, state, allowCaching]
